Non-volatile memory systems, such as flash memory, have been widely adopted for use in consumer products. Flash memory may be found in different forms, for example in the form of a portable memory card that can be carried between host devices or as a solid state disk (SSD) embedded in a host device. The flash device controller receives commands, such as read commands, from a host. The commands may include admin (e.g. commands for device configuration and maintenance) as well as operation commands (e.g. commands for accessing the NAND media including erase, write and read commands). There may be a submission queue for submitted commands and a command queue for commands waiting for execution. Complex protocols such as Non-Volatile Memory Express (NVMe) may provide specific queuing mechanisms in order to deliver optimal performance. However, these mechanisms may cause inefficiencies depending on the protocols used. For example, data that is out of order in pending commands may be difficult to search/access when using a scatter gather list (SGL) mechanism. Due to a demand in higher performance storage is coming from a various range of applications such as cloud computing, high performance computing and video broadcasting, there is a need for improved command handling and data transfer.